package com.nitty.cash.loop.ui.contract

import com.nitty.cash.loop.common.ICommonView
import org.json.JSONObject

/**
 * NittyCash
 * @Author wwdeng
 * @CreateTime: 2024/12/19 14:39
 * @Annotation：View 接口聚合
 */
interface IViewContract {

    /**
     * 启动页
     */
    interface ILaunchView: ICommonView {

        /**
         * 获取地区转发成功
         */
        fun showLaunchTimeZoneRequestData(data: String)

        /**
         * 进入引导页
         */
        fun showLaunchGuidePage()

        /**
         * 进入权限页
         */
        fun showLaunchPermissionPage()

        /**
         * 进入登录页
         */
        fun showLaunchLoginPage()

        /**
         * 进入主页
         */
        fun showLaunchMainPage()
    }

    /**
     * 权限
     */
    interface IPermissionView: ICommonView {

        /**
         * 设置权限列表
         */
        fun showPermissionList(pList: ArrayList<JSONObject>)

        /**
         * 展示指定的权限页面
         */
        fun showPermissionPage(index: Int)
        /**
         * 未申请
         */
        fun showPermissionNotObtained()

        /**
         * 已允许
         */
        fun showPermissionAuthorized()

        /**
         * 已拒绝
         */
        fun showPermissionBanned()
        /**
         * 进入登录页面
         */
        fun showPermissionSuccess()
    }

    /**
     * 登录
     */
    interface ILoginView: ICommonView {

        /**
         * 获取输入的手机号码
         */
        fun getUserLoginMobile(): String

        /**
         * 登录失败
         */
        fun showUserLoginFailure(data: JSONObject)

        /**
         * 登录成功，进入欢迎页面
         */
        fun showUserLoginMainPage()
    }

    /**
     * app tab
     */
    interface INittyTabView : ICommonView {

        /**
         * 设置tabList
         */
        fun showNittyTabList(tabList: ArrayList<JSONObject>)

        /**
         * 刷新Tab
         */
        fun notifyNittyTabDataChanged(curtIndex: Int)

        /**
         * 需要检验手机号
         */
        fun showNittyCheckNumberPage()
    }

    /**
     * 首页(未授信、未借款、已借款)
     */
    interface IWithdrawView: ICommonView {

        /**
         * 显示未授信Views
         */
        fun showNittyStepIncompleteViews()

        /**
         * 已授信ViewsViews
         */
        fun showNittyStepCompleteViews(data: JSONObject)

        /**
         * 进入SMS、AppList权限页面
         */
        fun showNittyPermissionPage()

        /**
         * 认证已完成 - 进入申贷页面
         */
        fun showNittyApplyPage()

        /**
         * 认证未完成 - 进入认证页面
         */
        fun showNittyStepsPage()
        /**
         * 已授信 && 拒绝
         */
        fun showNittyCreditRejectedPage()
        /**
         * 进入授信中页面
         */
        fun showNittyCreditReviewPage()
        /**
         * 存在被拒绝的订单，需要提示
         */
        fun showNittyOrderRejectedDialog()
    }

    /**
     * 进件信息
     */
    interface IProcessView: ICommonView {

        /**
         * 进件流程已完成
         */
        fun showProcessCompleteViews()

        /**
         * 移除所有Step
         */
        fun removeProcessAllViews()

        /**
         * 添加已完成View
         */
        fun showProcessAfterView(stepTypeDrawable: Int,stepTitle: String)

        /**
         * 添加未开始Step
         */
        fun showProcessBeforeView(stepTypeDrawable: Int,stepTitle: String)

        /**
         * 联系人
         */
        fun showProcessContactView(stepData: JSONObject)

        /**
         * 通用
         */
        fun showProcessCommonView(stepData: JSONObject)

        /**
         * 提交成功
         */
        fun showProcessSubmitSuccess()
    }

    /**
     * 额度审核中
     */
    interface ILimitReviewingView: ICommonView {

        /**
         * 授信中
         */
        fun showLimitReviewingViews()

        /**
         * 已授信
         */
        fun showLimitSuccessViews(data: JSONObject)

        /**
         * 额度审核失败
         */
        fun showLimitFailedViews()

        /**
         * 申贷
         */
        fun showLimitApplyPage()

        /**
         * 权限申请页面
         */
        fun showLimitPermissionPage()
    }

    /**
     * 贷款申请
     */
    interface IApplyView: ICommonView {
        /**
         * 获取申请金额
         */
        fun getApplyAmount(): String

        /**
         * 获取申请贷款天数
         */
        fun getApplyDays(): String

        /**
         * 展示不可选贷款额度View
         */
        fun showNotOptionalViews()

        /**
         * 展示可选额度View
         */
        fun showOptionalViews(data: JSONObject,showAnim: Boolean)

        /**
         * 设置贷款明细
         */
        fun showLoadDetailsList(data: JSONObject)

        /**
         * 显示贷款申请成功
         */
        fun showLoanApplySuccess()

        /**
         * 显示申请失败 订单状态 或 申请状态 验证不通过，需要返回首页显示对应页面
         */
        fun showLoanApplyFailed()
    }

    /**
     * SMS,WhatsApp 校验
     */
    interface ICheckView: ICommonView {

        /**
         * 获取手机号码
         */
        fun getNittyCheckMobile(): String

        /**
         * 获取验证码
         */
        fun getNittyCheckCode(): String

        /**
         * 切换选择类型：SMS、WHATSAPP
         */
        fun showNittyCheckType(type: String)

        /**
         * 验证码发送成功
         */
        fun showNittyCheckSendCodeSuccess(directLoginFlag: String)

        /**
         * 选择出生日期
         */
        fun showNittyCheckChooseBirthdayDialog()

        /**
         * 校验成功
         */
        fun showNittyCheckSuccess()
    }

    /**
     * 订单详情
     */
    interface IOrderDetailsView: ICommonView {
        //获取订单id
        fun getOrderId(): String
        /**
         * 共用View
         */
        fun showOrderDetailsCommonViews(obj: JSONObject)
        /**
         * 审核中
         */
        fun showOrderDetailsReviewingViews()
        /**
         * 放款中
         */
        fun showOrderDetailsDisbursingViews()
        /**
         * 已拒绝
         */
        fun showOrderDetailsRejectedViews(obj: JSONObject)
        /**
         * 待还款
         */
        fun showOrderDetailsRepayViews()
        /**
         * 账户列表
         */
        fun showOrderDetailsWalletList(accountList: ArrayList<JSONObject>)
    }

    /**
     * 订单还款状态PIN
     */
    interface IOrderPayPinView: ICommonView {

        /**
         * 原订单id
         */
        fun getNittyPayPinOrderId(): String

        /**
         * 共用View
         */
        fun showNittyPayPinCommonView(data: JSONObject)
        /**
         * 支付成功
         */
        fun showNittyPayPinSuccessView(data: JSONObject)

        /**
         * 支付失败
         */
        fun showNittyPayPinFailedView(data: JSONObject)

        /**
         * 支付处理中
         */
        fun showNittyPayPinProcessView(data: JSONObject)
    }

    /**
     * 意见反馈
     */
    interface IFeedbackView : ICommonView {

        /**
         * 设置意见反馈类型列表
         */
        fun setFeedbackQuestionTypeList(typeList: ArrayList<JSONObject>)

        /**
         * 提交反馈成功
         */
        fun showFeedbackSubmitSuccess()
    }

    /**
     * 图片上传
     */
    interface IPictureUploadView: ICommonView {
        /**
         * 图片上传成功
         */
        fun showUploadPictureSuccess(imgPath: String, imgUrl: String)
    }
}